<?php
//author：扬扬。于2013-05-22.php新手练习作
require "include/bittorrent.php";
require "memcache.php";
dbconn();
loggedinorreturn();
parked();
if ($CURUSER['enabled'] == 'no')
	stderr("错误", "你的账号被封禁", 0);
//每次计算随机数基数cost，每次偷魔力值手续费tax，20几率输掉，randlose，10几率双倍，其他rand。getcaughtrand被抓几率，被抓扣caughtcost，需要needprotect个保镖，每隔limittime秒可以偷一次。
$cost = 500;
$tax = $cost * 0.06;
$rand = mt_rand(90, 180) * 0.01;
$randlose = mt_rand(50, 100) * 0.01;
$protectcost = 700;
$getcaughtrand = mt_rand(1, 10000);
$caughtcost = 5 * $cost;
$needprotect = 30;
$caught = -($needprotect + 5);
$limittime = 300;

function changestealstatus($userid, $num, $reset) {
	$userid = sqlesc($userid);
	if ($reset == 'no')
		sql_query("UPDATE users SET stealstatus = stealstatus + $num WHERE id=$userid") or sqlerr(__FILE__, __LINE__);
	else
		sql_query("UPDATE users SET stealstatus = $reset WHERE id=$userid") or sqlerr(__FILE__, __LINE__);
}

$return = "<br /><a href='steal.php' class='faqlink'>点击返回</a>";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
	if ($_POST['action'] == "steal") {
//steal prepare
		$date = date("H:i:s");
		addBonus($CURUSER['id'], -$tax);
		$username = sqlesc($_POST['username']);
		$opusername = sqlesc($CURUSER['username']);
		$res = sql_query("SELECT id, username, seedbonus, stealstatus FROM users WHERE username = $username") or sqlerr(__FILE__, __LINE__);
		$arr = mysql_fetch_assoc($res);

//error message
		if ($CURUSER['seedbonus'] <= $cost) {
			stderr("出错了", "你的魔力值不足 $cost 了，偷窃经费不够(-$tax)" . $return, 0);
			die;
		}
		if ($CURUSER['stealstatus'] == -5) {
			addBonus($CURUSER['id'], -$cost);
			stderr("出错了", "你退出了这个游戏，不能偷别人，但是魔力值一样要扣(-$cost)，不做记录" . $return, 0);
			die;
		}
		if ($CURUSER['stealstatus'] < -5) {
			addBonus($CURUSER['id'], -$cost);
			stderr("出错了", "你正在蹲监狱，不能偷别人，但是魔力值一样要扣(-$cost)，不做记录" . $return, 0);
			die;
		}
		if ($username == $opusername) {
			stderr("出错了", "花偷窃经费偷自己，偷窃经费倒是没丢，系统拿走部分浪费了(-$tax)。将不记录到魔力值记录，免得丢人~" . $return, 0);
			die;
		}
		if (!$arr['id']) {
			stderr("出错了", "没有这个用户，花了偷窃经费，偷了个空(-$tax)。将不记录到魔力值记录，免得丢人~" . $return, 0);
			die;
		}
		if ($arr['stealstatus'] == -5) {
			stderr("出错了", "他不玩这个游戏。偷窃经费白花了，(-$tax)将不记录到魔力值记录。" . $return, 0);
			die;
		}
		if ($arr['stealstatus'] < -5) {
			addBonus($CURUSER['id'], -$cost);
			stderr("出错了", "他正在坐牢呢，你也要坐牢吗~？(-$cost)将不记录到魔力值记录。" . $return, 0);
			die;
		}
		if ($arr['seedbonus'] <= 5 * $cost) {
			stderr("出错了", "他的魔力值不足 5 * $cost 了，换个有钱的偷吧，偷窃经费还给你(-$tax)" . $return, 0);
			die;
		}

//steal start
//change &&check stealtime memcache方法
		if ($memcache->get('app_steal_' . $CURUSER['id']) != '') {
			$lasttime = $memcache->get('app_steal_' . $CURUSER['id']);
			stderr("错误", "你在 $limittime 秒内($lasttime)偷过魔力值，休息一会吧" . $return, 0);
		}
		$memcache->set('app_steal_' . $CURUSER['id'], $date, false, $limittime) or die("请向管理员报告此错误");

//被抓
		if ($getcaughtrand == 1) {
			addBonus($CURUSER['id'], -$caughtcost);
			writeBonusComment($CURUSER['id'], "偷魔力值被抓了，魔力值被扣了 $caughtcost ！");
			changestealstatus($CURUSER['id'], 0, $caught);
			stderr("很不幸", "你偷魔力值被抓了。。。你的魔力值被扣除了 $caughtcost 。你现在被抓进了监狱，不能偷别人的魔力值，也不会被偷。你需要找 $needprotect 个保镖把你救出来才能继续游戏。出狱之后记得重新加入游戏" . $return, 0);
			die;
		}

//偷到保镖
		if ($arr['stealstatus'] > 0) {
			$becaught = mt_rand(1, 100);
			if ($becaught > 30) {
				addBonus($CURUSER['id'], -$cost);
				writeBonusComment($CURUSER['id'], "偷{$arr['username']}的魔力值被保镖抓了，损失 $cost 个魔力值干掉他一个保镖");
				stderr("出错了", "他花钱雇保镖，被暂时保护了。偷窃经费花掉了，但是你也干掉了他一个保镖~（-$cost ）" . $return, 0, 1, 1, 0);
				changestealstatus($arr['id'], -1, 'no');
				addBonus($arr['id'], $cost / 2);
				writeBonusComment($arr['id'], "{$CURUSER['username']}来偷你的魔力值！但是因为你有保镖，他失败了。你获得了偷窃者的 $cost / 2 个魔力值，另外一半被保镖带走了");
				if ($arr['stealstatus' != -1])
					sendMessage(0, $arr['id'], "你的魔力值被偷了！", "[b]{$CURUSER['username']}[/b]来偷你的魔力值！但是因为你有保镖，他失败了。你获得了偷窃者的 $cost / 2 个魔力值，另外一半被保镖带走了。\n如果你想偷回来，或者申请保护，或者不想参与这个游戏，[url=steal.php]都可以在这里完成[/url]\n[url=sendmessage.php?receiver={$CURUSER['id']}]给他发站内信[/url]");
				die;
			} else
				$return .= "（你的保镖睡着了）";
		}

//get random
		$random = mt_rand(1, 100);
		if ($random <= 20) {
			$opget = $randlose * $cost;
			//$userget = $cost;
		} elseif ($random >= 90) {
			$opget = 2 * $cost;
			//$userget = 0;
		} else {
			$opget = $rand * $cost;
			//$userget = $cost - $opget;
		}

//do abs
		$abs = abs($cost - $opget);

		if ($cost == $opget) {
			$message = "但是，他没有从你这里捞到任何好处~";
		} elseif ($cost < $opget) {
			$message = "你被他偷走了 $abs 个魔力值。";
			addBonus($arr['id'], -$abs);
			writeBonusComment($arr['id'], "被{$CURUSER['username']}偷走 $abs 个魔力值");
			addBonus($CURUSER['id'], $abs);
			writeBonusComment($CURUSER['id'], "从{$arr['username']}偷到 $abs 个魔力值");
			stderr("结果", "从{$arr['username']}偷到 $abs 个魔力值" . $return, 0, 1, 1, 0);
		} else {
			$message = "但是，他不仅没有成功，反而给你留下了 $abs 个魔力值~";
			addBonus($arr['id'], $abs);
			writeBonusComment($arr['id'], "{$CURUSER['username']}来偷魔力值，反而留下 $abs 个");
			addBonus($CURUSER['id'], -$abs);
			writeBonusComment($CURUSER['id'], "偷{$arr['username']}的魔力值反而搭进去 $abs 个");
			stderr("结果", "偷{$arr['username']}的魔力值反而搭进去 $abs 个" . $return, 0, 1, 1, 0);
		}
//send message to user

		if ($arr['stealstatus' != -1])
			sendMessage(0, $arr['id'], "你的魔力值被偷了！", "你的魔力值被[b]{$CURUSER['username']}[/b]偷了!\n" . $message . "\n如果你想偷回来，或者申请保护，或者不想参与这个游戏，[url=steal.php]都可以在这里完成[/url]\n[url=sendmessage.php?receiver={$CURUSER['id']}]给他发站内信[/url]");
		die;
//end steal
	}
//改变steal值到-5或0以退出或加入游戏以及屏蔽站内信
	if ($_POST['action'] == 'option') {
		if ($CURUSER['stealstatus'] < -5) {
			$abssteal = abs($CURUSER['stealstatus']) - 5;
			stderr("你被抓了", "你正在蹲监狱，已经退出了游戏。你还需要购买 $abssteal 个保镖把你从监狱救出来才能继续游戏。出狱之后记得重新加入游戏" . $return, 0);
			die;
		}
		if ($_POST['quite'] == 'on' && $CURUSER['stealstatus'] < -1) {
			changestealstatus($CURUSER['id'], 0, '0');
			addBonus($CURUSER['id'], -2000);
			writeBonusComment($CURUSER['id'], "-2000；退出游戏之后重新加入，花费了2000个魔力值");
			stderr("操作成功", "你成功重新加入了游戏" . $return, 0);
			die;
		}
		if ($_POST['quite'] == 'off' && $CURUSER['stealstatus'] > 0) {
			stderr("提示信息", "你现在还有保镖，不要抛弃他们啊。" . $return, 0);
			die;
		}
		if ($_POST['quite'] == 'off') {
			changestealstatus($CURUSER['id'], 0, -5);
			stderr("操作成功", "你成功退出了这个游戏，你将不能偷别人，别人也不再能偷走你的魔力值。" . $return, 0);
			die;
		}
		if ($_POST['message'] == false && $CURUSER['stealstatus'] == 0) {
			changestealstatus($CURUSER['id'], 0, -1);
			stderr("操作成功", "你成功拦截了偷魔力值应用的站内信，你家被偷光都不会告诉你了~" . $return, 0);
			die;
		}
		if ($_POST['message'] == true && $CURUSER['stealstatus'] == -1) {
			changestealstatus($CURUSER['id'], 0, '0');
			stderr("操作成功", "你将继续接收站内信提示" . $return, 0);
			die;
		} else
			stderr("操作失败", "估计是你还有保镖的缘故，你的操作失败了。" . $return, 0);
	}

//购买保镖
	if ($_POST['action'] == 'changesteal') {

		$changenum = (int) $_POST['stealnum'];
		$costforchange = $changenum * $protectcost;
		if ($changenum <= 0)
			stderr("错误", "你输入的数字不是正数" . $return, 0);
		if ($CURUSER['seedbonus'] < $costforchange) {
			stderr("魔力值不够", "你的魔力值不购买这么多的保镖" . $return, 0);
			die;
		}
		$abssteal = abs($CURUSER['stealstatus']) - 5 - $changenum;
		$pronow = $CURUSER['stealstatus'] > 0 ? "你现在有 {$CURUSER['stealstatus']} 个保镖。" : "你还需要 $abssteal 个保镖才能把你救出来";
		addBonus($CURUSER['id'], -$costforchange);
		writeBonusComment($CURUSER['id'], "花费 $costforchange 个魔力值购买了 $changenum 个保镖");
		changestealstatus($CURUSER['id'], $changenum, 'no');
		stderr("操作成功", "你花费 $costforchange 个魔力值购买了 $changenum 个保镖。" . $pronow . $return, 0);
		die;
	}

//show
	if ($_POST['action'] == 'show') {
		if ($CURUSER['seedbonus'] <= $cost) {
			stderr("出错了", "你的魔力值不足 $cost 了，贿赂经费不够" . $return, 0);
			die;
		}
		addBonus($CURUSER['id'], -($cost * 2));
		writeBonusComment($CURUSER['id'], "在偷魔力值应用中花费 $cost * 2 个魔力值购贿赂系统");
		$show = "每次花费 $cost 个魔力值去别人家，系统额外收取 $tax 。每次查看参数花费 2 * $cost 个<br/><b>你有10%几率输掉（获得0.50~1.00倍花费的魔力值），有10%几率偷双倍。其他情况下，随机获得0.90~1.80倍花费的魔力值。有万分之一的几率被抓。</b><br/>被抓之后需要购买 $needprotect 个保镖把你救出来。每个保镖需要 $protectcost 个魔力值。出狱之后需要重新加入游戏。<br/>如果对游戏规则有修改建议，请在论坛灌水区发帖讨论，不要透露太多信息哦<br/>";
		stderr("不要告诉别人哦", "$show ", 0);
	}
//挑衅
	if ($_POST['writename'] == 'yes') {
		if ($CURUSER['stealstatus'] <= -5)
			stderr("出错", "你被抓或者退出了游戏，挑衅谁呀" . $return, 0);
		if ($CURUSER['stealstatus'] > 0) {
			changestealstatus($CURUSER['id'], 0, '0');
			echo "<script type=\"text/javascript\">alert('你家保镖听说你不要他们了，就全都跑掉了');window.location.href = 'steal.php'</script>";
		}
		if ($memcache->get('app_steal_userlist_' . $CURUSER['id']) == "") {//如果该ID的缓存为空的话
			$memcache->set('app_steal_userlist_' . $CURUSER['id'], $CURUSER['username'], false, 259200); //则设置该ID缓存保持3天
			$newlist = $memcache->get('app_steal_userlist') . "<br />" . $memcache->get('app_steal_userlist_' . $CURUSER['id']);
			$memcache->set('app_steal_userlist', $newlist, false, 259200);
		} else {
			echo "<script type=\"text/javascript\">alert('你已经挑衅过了！！！');</script>";
		}
	}
}
stdhead("偷魔力值应用");
?>

<b style="color:blue;font-size:54px;">嘿，小偷儿</b>
<form action="" method="post" >
	<input type="hidden" name="action" value="steal"/>
	请输入对方的用户名：<input type="text" name="username" />
	<input type="submit" name="submit" value="动手！"/>
</form>
<a href="topten.php?type=6&lim=100&subtype=bo" class="faqlink" target="_blank">查看魔力值排行榜的土豪</a><br/>土豪家里可能有保镖，偷魔力值需谨慎
<br/>
<form method="post">
	<input type="hidden" name="action" value="show"/>
	贿赂系统了解计算规则(每次查看规则将花费 2 * <?php echo $cost; ?> 个魔力值)
	<input type="submit" name="submit" value="知己知彼"/>
</form>
<div style="background-color:#000000;width:600px">
	<p style="color:red;font-size:15pt; background-color:#454545"><b> 小偷儿公告板</b></p>调整保镖状态。拥有保镖被偷时，有30%几率抓不到小偷，此时不消耗保镖数量，保镖睡着，正常被偷。<br/>新增拦截站内信功能。保镖必须数目为 0 时才能开启，购买保镖将使此功能无效。
	<p style="color:#FFFFFF"><b style="font-size:15pt">以下用户公然挑衅小偷儿界，偷光他们！</b></p>
	<p style="color:#FFFFFF; font-size: 9pt"><?php echo $memcache->get('app_steal_userlist'); ?><br /><br />挑衅小偷会使家里保镖全都跑掉，挑衅名单将挂在黑板上3天，之后自动消失。</p>
	<form method="post"><input type="hidden" name="writename" value="yes" /><input type="submit" value="小偷们来偷我吧，我家保镖都撵走了~" /></form><br />
</div>
<b style="color:red;font-size:33px;">游戏规则</b><br/>
<table border="1" cellpadding="10" cellspacing="0" width="600px">
	<td>
		<ul>
			<li>首先 <b>每次</b> 偷窃时会被系统收取 <?= $tax ?> 个魔力值。每 <?= $limittime ?> 秒能偷一次。</li>
			<li>然后你可以去别人家里偷魔力值了~不过会有几率赔哦。（跟碰运气一样，但是赢的概率更大）</li>
			<li>有极小的几率被警察抓到，抓到的话将进监狱，损失 <?= $caughtcost ?> 个魔力值 ，不能继续偷别人的魔力值（等同于退出游戏）。</li>
			<li>你可以购买保镖保护自己的魔力值，拥有保镖的时候别人不能偷你，但是你可以偷别人。</li>
			<li>偷到被保镖保护的用户，将损失 <?= $cost ?> 个魔力值（其中的一半给被偷的用户），另外一半保镖会拿着跑掉。</li>
			<li>如果你不想玩这个游戏，不希望被偷魔力值的站内信困扰，你可以在下面的设置中退出这个游戏，其他人将不能偷你的魔力值。</li>
			<li>每个保镖需要花费 <?= $protectcost ?> 个魔力值。</li>
		</ul>
	</td>
</table>
<b style="color:red;font-size:33px;">游戏设置</b><br />
<form action="" method="post" ><b style="color:blue;font-size:22px;">买保镖</b><br/><?php
	$needpro = abs($CURUSER['stealstatus']) - 5;
	if ($CURUSER['stealstatus'] != -5)
		echo ($CURUSER['stealstatus'] < -5 ? "你现在还需要购买 " . $needpro . " 个保镖才能把你从监狱救出来" : "你现在有 " . $CURUSER['stealstatus'] . " 个保镖");
	else
		echo "你退出了游戏，购买保镖将使你损失魔力值并且有可能重新加入游戏";
	?><br/>
	请输入你要购买的保镖数量：
	<input type="hidden" name="action" value="changesteal"/>
	<input type="text"   name="stealnum"  />
	<input type="submit" value="购买保镖"/>
</form>
<form method="post">
	<b style="color:blue;font-size:22px;">是否接收站内信？</b><br/>选择不接收站内信将不退出游戏，别人可以来偷。你在有保镖的状态下不能停止接收站内信。被偷的状况请到<a href='myhistory.php?type=bonus'class='faqlink'>魔力值记录</a>查看。<br/>
	<input type="hidden" name="action" value="option"/>
	<?php
	echo "接收<input type=\"checkbox\" name=\"message\" " . ($CURUSER['stealstatus'] != -1 ? "  checked=\"checked\" " : "") . " /><br/>";
	?>
	<input type="submit" name="submit" value="执行"/>
</form>
<form action="" method="post">
	<b style="color:blue;font-size:22px;">是否继续参与游戏</b><br/>为了防止用户频繁退出加入游戏，每次退出之后<b style="color:red">重新加入</b>游戏将收取2000个魔力值。<br/>
	<input type="hidden" name="action" value="option"/>
	<?php
	echo "参与游戏<input type=\"radio\" name=\"quite\" value=\"on\" " . ($CURUSER['stealstatus'] >= -1 ? "  checked=\"checked\" " : "") . " /><br/>";
	echo "退出游戏<input type=\"radio\" name=\"quite\" value=\"off\" " . ($CURUSER['stealstatus'] <= -5 ? "  checked=\"checked\" " : "") . " /><br/>";
	?>
	<input type="submit" name="submit" value="执行"/>
</form>
<?php
stdfoot();
